package com.ruoyi.ldzlsb.service;

import java.util.List;
import com.ruoyi.ldzlsb.domain.SbInspectionRecord;

/**
 * 巡检单Service接口
 *
 * @author anli
 * @date 2025-01-11
 */
public interface ISbInspectionRecordService
{
    /**
     * 查询巡检单
     *
     * @param recordId 巡检单主键
     * @return 巡检单
     */
    public SbInspectionRecord selectSbInspectionRecordByRecordId(Long recordId);

    /**
     * 查询巡检单列表
     *
     * @param sbInspectionRecord 巡检单
     * @return 巡检单集合
     */
    public List<SbInspectionRecord> selectSbInspectionRecordList(SbInspectionRecord sbInspectionRecord);

    /**
     * 新增巡检单
     *
     * @param sbInspectionRecord 巡检单
     * @return 结果
     */
    public int insertSbInspectionRecord(SbInspectionRecord sbInspectionRecord);

    /**
     * 修改巡检单
     *
     * @param sbInspectionRecord 巡检单
     * @return 结果
     */
    public int updateSbInspectionRecord(SbInspectionRecord sbInspectionRecord);

    /**
     * 批量删除巡检单
     *
     * @param recordIds 需要删除的巡检单主键集合
     * @return 结果
     */
    public int deleteSbInspectionRecordByRecordIds(Long[] recordIds);

    /**
     * 删除巡检单信息
     *
     * @param recordId 巡检单主键
     * @return 结果
     */
    public int deleteSbInspectionRecordByRecordId(Long recordId);

    /**
     * 根据计划ID查询巡检单列表
     *
     * @param planId 巡检计划ID
     * @return 巡检单集合
     */
    public List<SbInspectionRecord> selectSbInspectionRecordByPlanId(Long planId);

    /**
     * 根据设备ID查询巡检单列表
     *
     * @param equipmentId 设备ID
     * @return 巡检单集合
     */
    public List<SbInspectionRecord> selectSbInspectionRecordByEquipmentId(Long equipmentId);

    /**
     * 根据巡检人员ID查询巡检单列表
     *
     * @param inspectorId 巡检人员ID
     * @return 巡检单集合
     */
    public List<SbInspectionRecord> selectSbInspectionRecordByInspectorId(Long inspectorId);
    
    /**
     * 统计今日巡检单数量
     * 
     * @return 今日巡检单数量
     */
    public int countTodayInspectionRecords();
    
    /**
     * 查询巡检单列表（包含关联信息）
     *
     * @param sbInspectionRecord 巡检单
     * @return 巡检单集合
     */
    public List<SbInspectionRecord> selectSbInspectionRecordWithInfoList(SbInspectionRecord sbInspectionRecord);
    
    /**
     * 根据巡检单编号查询巡检单
     *
     * @param recordCode 巡检单编号
     * @return 巡检单
     */
    public SbInspectionRecord selectSbInspectionRecordByRecordCode(String recordCode);
    
    /**
     * 检查设备是否正在巡检中
     *
     * @param equipmentId 设备ID
     * @return true表示设备正在巡检中，false表示设备不在巡检中
     */
    public boolean checkEquipmentInInspection(Long equipmentId);
} 